#!/bin/bash

# 一键启动后端服务器 - 双击即可运行
# 自动解决端口冲突并启动服务

# 获取脚本所在目录
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_DIR"

echo "=== CMB250716 后端服务器自动启动 ==="
echo "项目目录: $SCRIPT_DIR"
echo "时间: $(date)"
echo ""

# 1. 终止可能占用端口的进程
echo "🔍 检查并清理端口占用..."
pkill -f 'node.*3001' 2>/dev/null && echo "✅ 已终止3001端口进程" || echo "ℹ️  3001端口无占用进程"
pkill -f 'node.*3000' 2>/dev/null && echo "✅ 已终止3000端口进程" || echo "ℹ️  3000端口无占用进程"
pkill -f 'npm.*start' 2>/dev/null && echo "✅ 已终止npm start进程" || echo "ℹ️  无npm start进程"

# 等待进程完全停止
sleep 3

# 2. 强制清理端口（如果仍被占用）
for port in 3000 3001; do
    if lsof -ti:$port >/dev/null 2>&1; then
        echo "⚠️  强制清理端口 $port"
        lsof -ti:$port | xargs kill -9 2>/dev/null || true
        sleep 1
    fi
done

# 3. 进入后端目录
echo "📁 进入后端目录..."
cd "$SCRIPT_DIR/backend"

if [ ! -d "$SCRIPT_DIR/backend" ]; then
    echo "❌ 错误: 未找到backend目录"
    echo "请确保此脚本位于CMB250716项目根目录"
    read -p "按回车键退出..."
    exit 1
fi

# 4. 检查并安装依赖
if [ ! -f "package.json" ]; then
    echo "❌ 错误: 未找到package.json文件"
    read -p "按回车键退出..."
    exit 1
fi

if [ ! -d "node_modules" ] || [ ! -f "node_modules/.package-lock.json" ]; then
    echo "📦 安装依赖包..."
    npm install
    if [ $? -ne 0 ]; then
        echo "❌ 依赖安装失败"
        read -p "按回车键退出..."
        exit 1
    fi
else
    echo "✅ 依赖已安装"
fi

# 5. 显示启动信息
echo ""
echo "🚀 启动后端服务器..."
echo "📍 服务器将在以下端口之一启动: 3000, 3001"
echo "🌐 管理后台地址: http://localhost:5173"
echo "🔧 API地址: http://localhost:3000 或 http://localhost:3001"
echo ""
echo "💡 提示:"
echo "   - 服务器启动后请保持此窗口打开"
echo "   - 按 Ctrl+C 可停止服务器"
echo "   - 如需重启，请关闭此窗口后重新双击脚本"
echo ""
echo "========================"
echo ""

# 6. 启动服务器
npm start

# 7. 服务器停止后的清理
echo ""
echo "🛑 服务器已停止"
read -p "按回车键关闭窗口..."